/*
    并查集-下

    前置知识 : 讲解056-并查集-上

    本节课讲解并查集的更多题目

    并查集的小扩展
    可以定制信息：并查集目前有多少个集合，以及给每个集合打上标签信息

    注意：
    带权并查集的内容是大厂笔试面试冷门内容，会在【挺难】课程里讲述。
    可持久化并查集、可撤销并查集，更是比较冷门的内容，备战比赛的同学自行学习，本课程不再安排讲述

    ================================================

    题目1
    移除最多的同行或同列石头
    n 块石头放置在二维平面中的一些整数坐标点上。每个坐标点上最多只能有一块石头
    如果一块石头的 同行或者同列 上有其他石头存在，那么就可以移除这块石头
    给你一个长度为 n 的数组 stones ，
    其中 stones[i] = [xi, yi] 表示第 i 块石头的位置
    返回 可以移除的石子 的最大数量。
    测试链接 : 
    https://leetcode.cn/problems/most-stones-removed-with-same-row-or-column/

    ================================================

    题目2
    找出知晓秘密的所有专家
    给你一个整数 n ，表示有 n 个专家从 0 到 n - 1 编号
    另外给你一个下标从 0 开始的二维整数数组 meetings
    其中 meetings[i] = [xi, yi, timei]，表示专家 xi 和专家 yi 在时间 timei 要开一场会
    一个专家可以同时参加 多场会议 。最后，给你一个整数 firstPerson
    专家 0 有一个 秘密 ，最初，他在时间 0 将这个秘密分享给了专家 firstPerson
    接着，这个秘密会在每次有知晓这个秘密的专家参加会议时进行传播
    更正式的表达是，每次会议，如果专家 xi 在时间 timei 时知晓这个秘密
    那么他将会与专家 yi 分享这个秘密，反之亦然。秘密共享是 瞬时发生 的
    也就是说，在同一时间，一个专家不光可以接收到秘密，还能在其他会议上与其他专家分享
    在所有会议都结束之后，返回所有知晓这个秘密的专家列表，你可以按 任何顺序 返回答案
    链接测试 : https://leetcode.cn/problems/find-all-people-with-secret/

    ================================================

    题目3
    好路径的数目
    给你一棵 n 个节点的树（连通无向无环的图）
    节点编号从0到n-1，且恰好有n-1条边
    给你一个长度为 n 下标从 0 开始的整数数组 vals
    分别表示每个节点的值。同时给你一个二维整数数组 edges
    其中 edges[i] = [ai, bi] 表示节点 ai 和 bi 之间有一条 无向 边
    好路径需要满足以下条件：开始和结束节点的值相同、 路径中所有值都小于等于开始的值
    请你返回不同好路径的数目
    注意，一条路径和它反向的路径算作 同一 路径
    比方说， 0 -> 1 与 1 -> 0 视为同一条路径。单个节点也视为一条合法路径
    测试链接 : https://leetcode.cn/problems/number-of-good-paths/

    ================================================

    题目4
    尽量减少恶意软件的传播 II
    给定一个由 n 个节点组成的网络，一定是无向图，用 n * n 个邻接矩阵 graph 表示
    在节点网络中，只有当 graph[i][j] = 1 时，节点 i 能够直接连接到另一个节点 j。
    一些节点 initial 最初被恶意软件感染。只要两个节点直接连接，
    且其中至少一个节点受到恶意软件的感染，那么两个节点都将被恶意软件感染。
    这种恶意软件的传播将继续，直到没有更多的节点可以被这种方式感染。
    假设 M(initial) 是在恶意软件停止传播之后，
    整个网络中感染恶意软件的最终节点数。
    我们可以从 initial 中删除一个节点，
    并完全移除该节点以及从该节点到任何其他节点的任何连接。
    请返回移除后能够使 M(initial) 最小化的节点。
    如果有多个节点满足条件，返回索引 最小的节点 。initial 中每个整数都不同
    测试链接 : https://leetcode.cn/problems/minimize-malware-spread-ii/

    ================================================

    加餐练习：
    130. 被围绕的区域：https://leetcode.cn/problems/surrounded-regions/
    547. 省份数量：https://leetcode.cn/problems/number-of-provinces/
    684. 冗余连接：https://leetcode.cn/problems/redundant-connection/
    695. 岛屿的最大面积：https://leetcode.cn/problems/max-area-of-island/
    261. 以图判树：https://leetcode.cn/problems/graph-valid-tree/
    785. 判断二分图：https://leetcode.cn/problems/is-graph-bipartite/
    886. 可能的二分法：https://leetcode.cn/problems/possible-bipartition/
    990. 等式方程的可满足性：https://leetcode.cn/problems/satisfiability-of-equality-equations/

*/